package tech.aistar.mapper;

import org.apache.ibatis.annotations.*;
import tech.aistar.pojo.ProductCategory;
import java.util.List;

@Mapper
public interface ProductCategoryMapper {

    /**
     * 查询所有产品分类
     * @return 产品分类列表
     */
    @Select("SELECT * FROM product_category ORDER BY create_time DESC")
    List<ProductCategory> findAll();

    /**
     * 根据ID查询产品分类
     * @param categoryId 分类ID
     * @return 产品分类信息
     */
    @Select("SELECT * FROM product_category WHERE category_id = #{categoryId}")
    ProductCategory findById(Integer categoryId);

    /**
     * 新增产品分类
     * @param productCategory 产品分类对象
     * @return 影响的行数
     */
    @Insert("INSERT INTO product_category(category_name, create_time) VALUES(#{categoryName}, #{createTime})")
    @Options(useGeneratedKeys = true, keyProperty = "categoryId")
    int insert(ProductCategory productCategory);

    /**
     * 更新产品分类
     * @param productCategory 产品分类对象
     * @return 影响的行数
     */
    @Update("UPDATE product_category SET category_name = #{categoryName}, create_time = #{createTime} WHERE category_id = #{categoryId}")
    int update(ProductCategory productCategory);

    /**
     * 根据ID删除产品分类
     * @param categoryId 分类ID
     * @return 影响的行数
     */
    @Delete("DELETE FROM product_category WHERE category_id = #{categoryId}")
    int deleteById(Integer categoryId);

    /**
     * 根据分类名称查询（用于验证重复）
     * @param categoryName 分类名称
     * @return 产品分类信息
     */
    @Select("SELECT * FROM product_category WHERE category_name = #{categoryName}")
    ProductCategory findByCategoryName(String categoryName);

    /**
     * 统计分类数量
     * @return 分类总数
     */
    @Select("SELECT COUNT(*) FROM product_category")
    long count();
}